function T_pp = M_pp(ln_m)

    %%
    %% Second derivative
    %%

    n=length(ln_m);

    ind_im = 1+1 + (n+1).*[0:n-2];
    ind_ip   = 1-1 + (n+1).*[1:n-1];
    ind_i = 1   + (n+1).*[0:n-1];

    T_pp=sparse(n,n);

    d_sig_up=1./((ln_m(3:end)-ln_m(2:end-1)).*((ln_m(3:end)-ln_m(1:end-2)))./2);
    d_sig_dn=1./((ln_m(2:end-1)-ln_m(1:end-2)).*((ln_m(3:end)-ln_m(1:end-2)))./2);

    d_sig_up=[nan(1);d_sig_up];
    d_sig_dn(end+1)=nan(1);
    d_sig_stay=-([d_sig_up;nan(1)]+[nan(1);d_sig_dn]);

    el_i   = ones(n,1).*d_sig_stay;
    el_im =   ones(n-1,1).*d_sig_dn;
    el_ip   =   ones(n-1,1) .*d_sig_up;

    T_pp(ind_im(1:end-1))   = T_pp(ind_im(1:end-1))'+ el_im(1:end-1);
    T_pp(ind_ip(2:end))     = T_pp(ind_ip(2:end))'+ el_ip(2:end);
    T_pp(ind_i(2:end-1))    = T_pp(ind_i(2:end-1))'+  el_i(2:end-1);
    T_pp(1,:)               = T_pp(2,:);
    T_pp(end,:)             = T_pp(end-1,:);

end